Javaアプリケーションをローカル端末のコンテナ上で起動してみた
こんにちはこーへいです!
今回は簡単なサンプルJavaアプリケーションをローカル端末のコンテナ上で起動してみます。
前提
- Javaのバージョンは以下
java -version
openjdk version "17.0.12" 2024-07-16 LTS
OpenJDK Runtime Environment Corretto-17.0.12.7.1 (build 17.0.12+7-LTS)
OpenJDK 64-Bit Server VM Corretto-17.0.12.7.1 (build 17.0.12+7-LTS, mixed mode, sharing)
- ローカル端末はM2 Mac
- ビルドツールはMaven
Spring Bootにて「Hello World」アプリの作成
まずWebアプリケーションの作成を容易にするJavaのフレームワークであるSpring Bootを用いて簡単なHello Worldアプリを用意します。
今回は上記記事を参考に用意させていただきました。分かりやすくまとめられているので基本的に手順通り実施いただければと思います。
作成後、mainメソッドを実行してJavaアプリケーションを動かします。
「http://localhost:8081/hello」 でローカル上での起動を確認できました。
ちなみに私のローカル端末では8080ポートは別のアプリで使用していたので、Javaアプリでは8081を使用する様に「application.properties」で変更しています。
spring.application.name=demo
server.port=8081
ctrl+cなどでアプリを停止します。
jarファイルの作成
続いてjarファイルを作成します。jarファイルに圧縮することでアプリケーションの配布を容易に出来ます。
今回はMaven(gradleとよく使用されるJavaのビルドツール)の手順にてjarファイルの作成を行いました。
ブログ上ではVScodeからパッケージ化を行っていますが、./mvnw package
のコマンドでも実行可能です。
java -jar .\example.jar
上記コマンドを実行し、再び「http://localhost:8081/hello」 にアクセスしjar化したアプリケーションでも実行できるか確認します。
確認ができたら再びctrl+cで停止します。
コンテナにて起動
では最後にコンテナ上で起動を確認できるか試してみましょう!
Spring Bootのプロジェクト配下に以下のDockerfileを作成します。
FROM amazoncorretto:17
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
今回は別記事にて今回用意したアプリを元にECS上で検証予定なため、Amazonが用意しているOpenJDKディストリビューションであるCorrettoを使用しました。
ローカルのバージョンに合わせて17にしています。
そのほかの記述は公式サイトに準じています。
# イメージを作成
docker build -t sample/java:v1 .
# コンテナを起動
docker run -p 9999:8081 sample/java:v1
その後Dockerfileからイメージの作成、コンテナの起動を実施します(ちょっと遊び心を加えてローカル端末の9999ポートとコンテナの8081ポートを紐づけています)。
まとめ
簡単なJavaアプリケーションをコンテナ上に起動できました。
今後こちらを元にCodeシリーズやECSを使った検証を行うので楽しみにしていてください。